Memory devices are typically provided as internal storage areas in the computer. The term memory identifies data storage that comes in the form of integrated circuit chips. There are several different types of memory used in modern electronics, one common type is RAM (random-access memory). RAM is characteristically found in use as main memory in a computer environment. RAM refers to read and write memory; that is, you can both write data into RAM and read data from RAM. This is in contrast to read-only memory (ROM), which permits you only to read data. Most RAM is volatile, which means that it requires a steady flow of electricity to maintain its contents. As soon as the power is turned off, whatever data was in RAM is lost.
Computers almost always contain a small amount of ROM that holds instructions for starting up the computer. Unlike RAM, ROM cannot be written to. An EEPROM (electrically erasable programmable read-only memory) is a special type non-volatile ROM that can be erased by exposing it to an electrical charge. EEPROM comprise a large number of memory cells having electrically isolated gates (floating gates). Data is stored in the memory cells in the form of charge on the floating gates. Charge is transported to or removed from the floating gates by specialized programming and erase operations, respectively. Other types of non-volatile memory include, but are not limited to, Polymer Memory, Ferroelectric Random Access Memory (FeRAM), Ovionics Unified Memory (OUM), and Magnetoresistive Random Access Memory (MRAM).
Yet another type of non-volatile memory is a Flash memory. A Flash memory is a type of EEPROM that is typically erased and reprogrammed in blocks instead of one byte at a time. A typical Flash memory comprises a memory array, which includes a large number of memory cells. Each of the memory cells includes a floating gate field-effect transistor capable of holding a charge. The data in a cell is determined by the presence or absence of the charge in the floating gate. The cells are usually grouped into sections called “erase blocks.” The memory cells of a Flash memory array are typically arranged into a “NOR” architecture (each cell directly coupled to a bitline) or a “NAND” architecture (cells coupled into “strings” of cells, such that each cell is coupled indirectly to a bitline and requires activating the other cells of the string for access). Each of the cells within an erase block can be electrically programmed in a random basis by charging the floating gate. The charge can be removed from the floating gate by a block erase operation, wherein all floating gate memory cells in the erase block are erased in a single operation.
Each erase block of a Flash memory device contains a series of physical pages that are typically each written to a single row of the Flash memory array and include one or more user data areas and an associated control or overhead data areas. The overhead data areas contain overhead information for operation of physical row page and the user data area each overhead data space is associated with. Such overhead information typically includes, but is not limited to, erase block management (EBM) data, sector status information, or an error correction code (ECC). ECC's allow the Flash memory and/or an associated memory controller to detect data errors in the user data area and attempt to recover the user data if possible.
A problem with Flash memories is that each erase block physical row page stores the user data within close proximity to the overhead information, which includes the error correction codes. Because of this, an error in one or more physical row pages of an erase block due to physical damage, impurity migration, write fatigue, electrical transients, etc. can also affect the overhead data associated with those sectors. This increases the likelihood of a loss of data (if the ECC is damaged also) or even the loss of the ability to access the affected physical sector page occurring (if the sector management data is damaged) when such an error happens.
Additionally, many Flash memory devices and memory systems are logically abstracted by a software driver and/or memory controller and presented as a freely rewriteable memory device or as a rewriteable mass storage device, such as a magnetic disk. As a result of this logical abstraction, the user and overhead areas can and are moved about and/or consolidated within the Flash memory device or Flash memory system as data is moved, consolidated, and the underlying erase blocks are scheduled for erasure and reuse. The moving of user and overhead data in erase block architectures is a non-trivial task and is particularly subject to damage or errors in the user data or overhead data areas as this information is generally simply moved and not evaluated for errors in the stored data.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for circuits or data handing routines that allows for easy moving of data and user/overhead data reliability in erase block based non-volatile memories.